package com.hehongdan.wanandroid._1_1_3;

import android.app.Application;
import android.os.Debug;
import android.os.Environment;
import java.io.File;

/**
 * 4_1.1.3代码(启动)优化
 *
 * 类描述：统计App启动时间(并保存文件app.trace)。
 *
 * @author HeHongdan
 * @date 2021/3/25
 * @since v2021/3/25
 */
public class NeOptApplication extends Application {

    @Override
    public void onCreate() {
       super.onCreate();

       //1/3统计App启动时间===========================================================================
        File file = new File(Environment.getExternalStorageDirectory(),"app.trace");
        Debug.startMethodTracing(file.getAbsolutePath());
        //===========================================================================================

        // 中间业务逻辑代码
        init();// 主线程
        test();
        /**
         * (优化方法1/2)异步线程的方式来进行处理
         * 1：异步线程中使用的api不能创建Handler
         * 2：不能有UI操作
         * 3：对异步要求不高
         *
         * 注：减少代码执行时间，将执行的代码能放到异步线程
         */

        /**
         * (优化方法2/2)懒加载
         */

        //2/3统计App启动时间==========================================================================
        Debug.stopMethodTracing();
        //===========================================================================================

        //2/2统计App启动时间==========================================================================
        //获取统计结果文件(app.trace)命令：adb pull /storage/emulated/0/app.trace
        //===========================================================================================
    }
    private void init(){
        a();
    }
    private void a(){
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        b();
        test();
    }
    private void b(){
        try {
            Thread.sleep(2500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    private void test(){
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }




}
